/*
 * @Author: yangrongxin
 * @Date: 2021-07-19 10:55:42
 * @LastEditors: yangrongxin
 * @LastEditTime: 2021-12-17 14:04:12
 */
import { Component } from 'react';
import { Provider } from 'react-redux';
import updateApp from '@/utils/updateApp';
import dva from '@/utils/dva';
import models from '@/utils/model';
import * as Sentry from 'sentry-miniapp'; // 加载sentry异常监控
import '@tarojs/taro/html.css'; // 引入针对富文本内容的样式
import './app.scss'; // 引入taroUI组件样式
import './assets/icons/iconfont.css'; // 引入iconfont样式 iconfont_heart

// 当前是预发布环境进行测试的时候 增加异常捕获机制
if (MINI_PROGRAM_STATE_ENV === 'staging') {
  const version = wx.getAccountInfoSync().miniProgram.version || MINI_PROGRAM_STATE_VERSION;
  // 初始化 Sentry
  Sentry.init({
    dsn: '4c0d2bfc62b149c29e47a6fad1054c60@125.69.0.41:9000/19',
    release: version,
    environment: MINI_PROGRAM_STATE_ENV,
  });
}

const app = dva.createApp({
  models,
  initialState: {},
  enableLog: true,
  onError(e) {
    console.error('===appError===', e);
  },
});

const store = app.getStore();
global._app = app;

class App extends Component {
  // 组件在装载发生前被立刻调用 对应小程序中生命周期onLoad
  componentWillMount() {
    // Taro.hideTabBar();
    updateApp();
    // 调用code获取最新的token信息
    // 游客流程 当前用户默认不进行登录
    // const { token } = getItemSync('userInfo');
    // if (!token) {
    //   console.warn('我重新进行登录了');
    //   const { dispatch } = store;
    //   dispatch({
    //     type: 'global/loginWithCode',
    //   });
    // }
  }

  componentDidMount() {}

  componentDidShow() {}

  componentDidHide() {}

  componentDidCatchError() {}

  // this.props.children 是将要会渲染的页面
  render() {
    return <Provider store={store}>{this.props.children}</Provider>;
  }
}

export default App;
